// Generated from D:/BASIC/src/BasicParser.g4 by ANTLR 4.13.1
 package cn.stevenyang.gen; 
import org.antlr.v4.runtime.tree.ParseTreeVisitor;

/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by {@link BasicParserParser}.
 *
 * @param <T> The return type of the visit operation. Use {@link Void} for
 * operations with no return type.
 */
public interface BasicParserVisitor<T> extends ParseTreeVisitor<T> {
	/**
	 * Visit a parse tree produced by the {@code number}
	 * labeled alternative in {@link BasicParserParser#numeric}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNumber(BasicParserParser.NumberContext ctx);
	/**
	 * Visit a parse tree produced by the {@code varDefine}
	 * labeled alternative in {@link BasicParserParser#assignment}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVarDefine(BasicParserParser.VarDefineContext ctx);
	/**
	 * Visit a parse tree produced by the {@code defParameters}
	 * labeled alternative in {@link BasicParserParser#defparam}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDefParameters(BasicParserParser.DefParametersContext ctx);
	/**
	 * Visit a parse tree produced by the {@code genericExpression}
	 * labeled alternative in {@link BasicParserParser#process}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericExpression(BasicParserParser.GenericExpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code ifExpressionExpr}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfExpressionExpr(BasicParserParser.IfExpressionExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code compareLt}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCompareLt(BasicParserParser.CompareLtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code logicOr}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLogicOr(BasicParserParser.LogicOrContext ctx);
	/**
	 * Visit a parse tree produced by the {@code num}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNum(BasicParserParser.NumContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arthmeticMod}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArthmeticMod(BasicParserParser.ArthmeticModContext ctx);
	/**
	 * Visit a parse tree produced by the {@code returnStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitReturnStatement(BasicParserParser.ReturnStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code varDefineExpr}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVarDefineExpr(BasicParserParser.VarDefineExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code compareLte}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCompareLte(BasicParserParser.CompareLteContext ctx);
	/**
	 * Visit a parse tree produced by the {@code boolTrue}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBoolTrue(BasicParserParser.BoolTrueContext ctx);
	/**
	 * Visit a parse tree produced by the {@code logicAnd}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLogicAnd(BasicParserParser.LogicAndContext ctx);
	/**
	 * Visit a parse tree produced by the {@code concatenateStrStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConcatenateStrStatement(BasicParserParser.ConcatenateStrStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code logicBitAnd}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLogicBitAnd(BasicParserParser.LogicBitAndContext ctx);
	/**
	 * Visit a parse tree produced by the {@code logicXor}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLogicXor(BasicParserParser.LogicXorContext ctx);
	/**
	 * Visit a parse tree produced by the {@code compareGte}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCompareGte(BasicParserParser.CompareGteContext ctx);
	/**
	 * Visit a parse tree produced by the {@code getVarExpr}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGetVarExpr(BasicParserParser.GetVarExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arthmeticMinus}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArthmeticMinus(BasicParserParser.ArthmeticMinusContext ctx);
	/**
	 * Visit a parse tree produced by the {@code compareNeq}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCompareNeq(BasicParserParser.CompareNeqContext ctx);
	/**
	 * Visit a parse tree produced by the {@code logicNot}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLogicNot(BasicParserParser.LogicNotContext ctx);
	/**
	 * Visit a parse tree produced by the {@code logicBitOr}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLogicBitOr(BasicParserParser.LogicBitOrContext ctx);
	/**
	 * Visit a parse tree produced by the {@code boolFalse}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBoolFalse(BasicParserParser.BoolFalseContext ctx);
	/**
	 * Visit a parse tree produced by the {@code forEachExprStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForEachExprStatement(BasicParserParser.ForEachExprStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arthmeticAdd}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArthmeticAdd(BasicParserParser.ArthmeticAddContext ctx);
	/**
	 * Visit a parse tree produced by the {@code breakStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBreakStatement(BasicParserParser.BreakStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code priority}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPriority(BasicParserParser.PriorityContext ctx);
	/**
	 * Visit a parse tree produced by the {@code exitSubStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExitSubStatement(BasicParserParser.ExitSubStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code objectAccess}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitObjectAccess(BasicParserParser.ObjectAccessContext ctx);
	/**
	 * Visit a parse tree produced by the {@code str}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitStr(BasicParserParser.StrContext ctx);
	/**
	 * Visit a parse tree produced by the {@code whileExprStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitWhileExprStatement(BasicParserParser.WhileExprStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code classDefStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassDefStatement(BasicParserParser.ClassDefStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code meSelf}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMeSelf(BasicParserParser.MeSelfContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arthmeticDivide}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArthmeticDivide(BasicParserParser.ArthmeticDivideContext ctx);
	/**
	 * Visit a parse tree produced by the {@code forExprStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForExprStatement(BasicParserParser.ForExprStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arrayDefStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArrayDefStatement(BasicParserParser.ArrayDefStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code functionCall}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionCall(BasicParserParser.FunctionCallContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arthmeticMultiply}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArthmeticMultiply(BasicParserParser.ArthmeticMultiplyContext ctx);
	/**
	 * Visit a parse tree produced by the {@code mapDefStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMapDefStatement(BasicParserParser.MapDefStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code assignStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAssignStatement(BasicParserParser.AssignStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code compareGt}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCompareGt(BasicParserParser.CompareGtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code continueStatement}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitContinueStatement(BasicParserParser.ContinueStatementContext ctx);
	/**
	 * Visit a parse tree produced by the {@code compareEq}
	 * labeled alternative in {@link BasicParserParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCompareEq(BasicParserParser.CompareEqContext ctx);
	/**
	 * Visit a parse tree produced by the {@code funcCallParamsExpr}
	 * labeled alternative in {@link BasicParserParser#funccallparams}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFuncCallParamsExpr(BasicParserParser.FuncCallParamsExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code ifExpr}
	 * labeled alternative in {@link BasicParserParser#ifexpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfExpr(BasicParserParser.IfExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code elseIfExpr}
	 * labeled alternative in {@link BasicParserParser#elseifexpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElseIfExpr(BasicParserParser.ElseIfExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code elseExpr}
	 * labeled alternative in {@link BasicParserParser#elseexpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElseExpr(BasicParserParser.ElseExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code forExpr}
	 * labeled alternative in {@link BasicParserParser#forexpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForExpr(BasicParserParser.ForExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code forEachExpression}
	 * labeled alternative in {@link BasicParserParser#foreachexpr}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForEachExpression(BasicParserParser.ForEachExpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code whileExpr}
	 * labeled alternative in {@link BasicParserParser#whileexpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitWhileExpr(BasicParserParser.WhileExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code doLoopExpr}
	 * labeled alternative in {@link BasicParserParser#doloop}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDoLoopExpr(BasicParserParser.DoLoopExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code defFuncParamExpr}
	 * labeled alternative in {@link BasicParserParser#deffuncparam}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDefFuncParamExpr(BasicParserParser.DefFuncParamExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code subroutineDefine}
	 * labeled alternative in {@link BasicParserParser#sub}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSubroutineDefine(BasicParserParser.SubroutineDefineContext ctx);
	/**
	 * Visit a parse tree produced by the {@code functionDefine}
	 * labeled alternative in {@link BasicParserParser#func}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionDefine(BasicParserParser.FunctionDefineContext ctx);
	/**
	 * Visit a parse tree produced by the {@code implListExpr}
	 * labeled alternative in {@link BasicParserParser#impllist}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitImplListExpr(BasicParserParser.ImplListExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code defClassExpr}
	 * labeled alternative in {@link BasicParserParser#defclass}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDefClassExpr(BasicParserParser.DefClassExprContext ctx);
	/**
	 * Visit a parse tree produced by {@link BasicParserParser#accessclass}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAccessclass(BasicParserParser.AccessclassContext ctx);
	/**
	 * Visit a parse tree produced by the {@code classSubExpr}
	 * labeled alternative in {@link BasicParserParser#classsub}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassSubExpr(BasicParserParser.ClassSubExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code classFuncExpr}
	 * labeled alternative in {@link BasicParserParser#classfunc}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassFuncExpr(BasicParserParser.ClassFuncExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code classVarExpr}
	 * labeled alternative in {@link BasicParserParser#classvar}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassVarExpr(BasicParserParser.ClassVarExprContext ctx);
	/**
	 * Visit a parse tree produced by {@link BasicParserParser#classblock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassblock(BasicParserParser.ClassblockContext ctx);
	/**
	 * Visit a parse tree produced by the {@code classBodyExpr}
	 * labeled alternative in {@link BasicParserParser#classbody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassBodyExpr(BasicParserParser.ClassBodyExprContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arrayDef}
	 * labeled alternative in {@link BasicParserParser#array}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArrayDef(BasicParserParser.ArrayDefContext ctx);
	/**
	 * Visit a parse tree produced by the {@code mapDef}
	 * labeled alternative in {@link BasicParserParser#map}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMapDef(BasicParserParser.MapDefContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arrayTypeDef}
	 * labeled alternative in {@link BasicParserParser#arraytype}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArrayTypeDef(BasicParserParser.ArrayTypeDefContext ctx);
	/**
	 * Visit a parse tree produced by the {@code asTypeDef}
	 * labeled alternative in {@link BasicParserParser#astype}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAsTypeDef(BasicParserParser.AsTypeDefContext ctx);
}